const path = require('path')
const htmlWebpackPlugin = require('html-webpack-plugin')  // 引用html模板生成 html插件
const cleanWebpackPlugin = require('clean-webpack-plugin') // 每次build 删除文件插件
const webpack = require('webpack')
const ExtractTextPlugin = require("extract-text-webpack-plugin"); // 抽离css插件
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin') // 压缩css插件
module.exports = {
    entry:{ // 配置入口文件
        app :path.join(__dirname,'./src/main.js'),
        vendor: ['jquery']  // 把要抽离的第三方包名称 放在数组中
    },
    output:{
        path: path.join(__dirname, './dist'),
        filename: 'js/bundle.js'
    },
    // 配置html在内存中
    plugins: [
        new htmlWebpackPlugin({
            template: path.join(__dirname, './src/index.html'),
            filename : 'index.html',
            minify: {
                collapseWhitespace: true,  //合并html中的多余空格  
                removeComments: true, // 移除注释
                removeAttributeQuotes: true // 移除属性上的双引号
            }
        }),
        new cleanWebpackPlugin(['dist']),  // 删除dist目录
        new webpack.optimize.CommonsChunkPlugin({
            name: 'vendor', // 指定要抽离的入口名称
            filename: 'js/vendors.js' // 发布之后的第三方包的名称
        }),
        new webpack.optimize.UglifyJsPlugin({
            compress:{//配置压缩选项
                warnings: false // 移除警告
            }
        }),
        // webpack 3 已经移除了
        // new webpack.optimize.DedupePlugin({ // 设置产品为上线环境 进一步压缩js代码 
        //     'process.env.NODE_ENV': '"production"'
        // })
        new ExtractTextPlugin("css/styles.css"), // 抽取css 插件
        new OptimizeCssAssetsPlugin() // 压缩css 插件
    ],
    module:{
        rules: [
            {test:/\.css$/, use: ExtractTextPlugin.extract({
                fallback: "style-loader",
                use: "css-loader",
                publicPath: '../' // 指定抽取时候图片路径 自动为路径加../ 
            })},
            {test:/\.scss$/,use: ExtractTextPlugin.extract({
                fallback: 'style-loader',
                use: ['css-loader', 'sass-loader'],
                publicPath: '../' // 指定抽取时候图片路径 自动为路径加../ 
              })},
            {test:/\.(png|jpg|bmp|gif)$/,use: ['url-loader?limit=5000&name=images/[hash:8]-[name].[ext]']},
            {test:/\.jsx?$/,use: ['babel-loader'], exclude: /node_modules/ }           
        ]
    }
    

}